<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // function fn(){
        // //     console.log("fn");
        // // }
        // var a;

        // var  a = 10;
        // function fn(){
        //     console.log("fn");
        // }

        // console.log(a);
        // 1.函数内部的预解析；
        // 函数内部的预解析 只会在函数内部进行；
        // function fun(){
        //     console.log(a);  // undefined
        //     var a = 10;
        //     function fn(){
        //         console.log("fn");
        //     }
        //     fn();
        // }

        // fun();

        /* 
            预解析之后的代码
            function fun(){
                 function fn(){
                    console.log("fn");
                }
                var a;

                console.log(a);
                a = 10;
                fn();

            }
        
        
        
        
        */

        // 2.函数内部 存在相同的提升变量

        // function fun(fn){
        //     console.log(fn);
        //     // function fn(){
        //     //     console.log("fn");
        //     // }
        //     // fn();
        //     // var fn = 10;
        //     // console.log(fn);

        // }
        // fun(1);

        /* 
            函数的优先级 高 
            提升之后  
            // 函数先提升  变量再提升 最后考虑参数；
            function fun(fn){
                 function fn(){
                    console.log("fn");
                }
                var fn;
                fn();
                fn = 10;
                console.log(fn);
            }
        
        
        
        
        */

        // 3.一种诡异提升 

        console.log(a);  //undefined；
        if(false){
            var a = 10;
        }
       



    </script>
</body>
</html>